package principal;

import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultComboBoxModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import Vista.Vista;
import Controlador.Controlador;
import juego.Juego;

public class Principal extends JFrame implements ActionListener {
	
	private static Principal ventanaInicial;
	private JPanel primerPanel, segundoPanel;
	private JButton jugadorNuevo, iniciar, nivelCero;
	private JTextField nombreUsuario;	
	private JComboBox<Integer> comboNiveles; 
	private Insets insets1, insets2;
	private String nombre;
	private int puntaje = 0;
	private Integer nivel;
	
	public Principal() {
		setSize(300, 180);
		setTitle("Juego GPS Challenge");
		setLocationRelativeTo(null);
		setResizable(false);		
		inicializarPrimerPanel();
		inicializarSegundoPanel();
		setVisible(true);
	}

	public void inicializarPrimerPanel() {
		primerPanel = new JPanel();
		primerPanel.setLayout(null);
		primerPanel.setBounds(0, 0, 300, 150);
		insets1 = primerPanel.getInsets();
		
		JLabel nombreJuego = new JLabel("GPS CHALLENGE", this.obtenerImagenMoto(), JLabel.LEFT);
		nombreJuego.setBounds(60+insets1.left, 5+insets1.top, 200, 40);
		primerPanel.add(nombreJuego);
		
		jugadorNuevo = new JButton("Jugar");
		jugadorNuevo.setBounds(50+insets1.left, 55+insets1.top,200,30);		
		primerPanel.add(jugadorNuevo);		
		jugadorNuevo.addActionListener(this);
		
		nivelCero = new JButton("Nivel Cero");
		nivelCero.setBounds(50+insets1.left, 95+insets1.top,200, 30);
		primerPanel.add(nivelCero);
		nivelCero.addActionListener(this);
		
		primerPanel.setVisible(true);
		this.add(primerPanel);				
	}

	public void inicializarSegundoPanel() {		
		segundoPanel = new JPanel();
		segundoPanel.setLayout(null);
		segundoPanel.setBounds(0, 0, 300, 150);		
		insets2 = segundoPanel.getInsets();
		
		JLabel nombreEtiqueta = new JLabel("Nombre: ");
		nombreEtiqueta.setBounds(60+insets2.left, 20+insets2.top, 100, 25);
		
		nombreUsuario = new JTextField(10);
		nombreUsuario.setText("Anonimo");
		nombreUsuario.setBounds(120+insets1.left, 20+insets1.top, 120, 25);
		
		JLabel nivelEtiqueta = new JLabel("Nivel: ");
		nivelEtiqueta.setBounds(60+insets2.left, 55+insets2.top, 100, 25);
		
		comboNiveles = new JComboBox<Integer>();
		comboNiveles.setModel(new DefaultComboBoxModel<Integer>(new Integer[] {0, 1, 2, 3, 4,5}));
		comboNiveles.setSelectedItem(1);
		comboNiveles.setBounds(120+insets2.left, 55+insets2.top, 120, 25);
		
		iniciar = new JButton("Iniciar");
		iniciar.setBounds(75+insets2.left, 100+insets2.top, 150, 30);				
		
		segundoPanel.add(nombreEtiqueta);
		segundoPanel.add(nombreUsuario);
		segundoPanel.add(nivelEtiqueta);				
		segundoPanel.add(comboNiveles);
		segundoPanel.add(iniciar);
		
		iniciar.addActionListener(this);		
		segundoPanel.setVisible(false);
		this.add(segundoPanel);
	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == jugadorNuevo) {
			primerPanel.setVisible(false);
			segundoPanel.setVisible(true);
		}
		
		if (e.getSource() == nivelCero) {
			ventanaInicial.setVisible(false);
			nombre = "Nico";
			nivel = 0;
			Juego juego = Juego.Default(nombre, puntaje, nivel);
			Controlador controlador = new Controlador(juego);
			new Vista(controlador, juego);
		}
		
		if (e.getSource() == iniciar) {
			ventanaInicial.setVisible(false);
			nombre = nombreUsuario.getText();
			nivel = (Integer)comboNiveles.getSelectedItem();
			Juego juego = Juego.Default(nombre, puntaje, nivel);
			Controlador controlador = new Controlador(juego);
			new Vista(controlador, juego);
		}		
	}
	
	//auxiliar para cargar imagen
	private ImageIcon obtenerImagenMoto() {
		ImageIcon imagen = new ImageIcon(this.getClass().getResource("../Vista/imagenes/moto_80x40.png"));
		return imagen;
	}

	public static void main(String[] ar) {
		ventanaInicial = new Principal();
	}	
}
